AWS ParallelCluster のストレージ選定 FSx for OpenZFS と FSx for Lustre 最小構成のランニングコストを調べてみた
計算するときはある程度高いストレージ性能が欲しいです。「高速なストレージ = 価格が高いイメージ」ですが、実際のところストレージのランニングコストは如何ほどなものか気になりました。そこで今回は FSx for OpenZFS と FSx for Lustre を最小構成で起動し維持する場合の利用費と、最小構成時のストレージ性能は実用的なのか?について調べました。
調査結果
2022年8月11日現在の東京リージョンの価格になります。
FSx for OpenZFS | FSx for Lustre | |
---|---|---|
最小構成の月額 | $22.4 | $205 |
同等構成の月額 | $218 | $205 |
- Lustre の性能が必要なときは素直に FSx for Lustre を選択
- 数万 〜 数十万 IOPS も性能を必要としないときは FSx for OpenZFS でスペック調整も検討
- ディスクサイズ、スループット、IOPS の指定で利用費が変わります
- FSx for OpenZFS は最小構成だと HPC ワークロードでは実用的ではない
- IOPS の値のみを比較するとヘッドノードから共有される EBS より劣ることになる
- HPC ワークロードで利用するときは要スペック調整
FSx for OpenZFS をサポート
AWS ParallelCluster 3.2.0 で FSx for OpenZFS のマウントがサポートされました。これまでは高性能ストレージが必要となったら唯一サポートしていた FSx for Lustre の一択でした。v3.2 のアップデートで FSx for OpenZFS がサポートされストレージの選択幅が広がりました。FSx for OpenZFS を中心に調べていきます。
FSx for OpenZFS についてはリリース時の記事もご参照ください。
ストレージスペック比較
スペック比較は AWS 公式の FSx シリーズ選択ガイドにまとまっています。
個人的に比較したい上限値のスペックを抜き出しました。
FSx for OpenZFS | FSx for Lustre | |
---|---|---|
レイテンシー | 0.5 ms 以下 | 1ms 以下 |
最大スループット | 4~12.5 GB/s | 1000 GB/s |
1 つのクライアントあたりの最大スループット | 12.5 GB/s | 37.5 GB/s |
最大 IOPS | 100万 IOPS | 数100万 IOPS |
ファイルシステムの最大サイズ | 512 TiB | 数 PB |
クライアントの互換性 | Windows、Linux、macOS | Linux |
プロトコルのサポート | NFS 3、4.0、4.1、4.2 | 最適なパフォーマンスを発揮するカスタム (POSIX 準拠) プロトコル |
スループットと IOPS レベルの選択 | スループットと IOPS | スループットのみ |
可用性 SLA | シングル AZ: 99.5% | シングル AZ: 99.5% |
S3 データセットの自動インポート/エクスポート | ー | ○ |
最小構成のストレージ性能
最小構成時のスペックを調査します。FSx for OpenZFS, Lustre ともにデータ圧縮が効くためスループットの向上を見込めるのですが、圧縮率によってスループットが変動するため今回はデータ圧縮を考慮しないこととします。
パフォーマンスは以下のドキュメントを参考にしました。
- Amazon FSx for OpenZFS performance - FSx for OpenZFS
- Amazon FSx for Lustre performance - FSx for Lustre
FSx for OpenZFS
各種パラメータの上限下限値が決まるキーとなるパラメータはスループットです。下限値のスループット 64 MB/s 選択時の性能です。
FSx for OpenZFS | 備考 | |
---|---|---|
起動に必要な最低ディスクサイズ | 64 GiB | 下限値を指定 |
スループット | 64 MB/s | 下限値を選択 |
インメモリキャッシュサイズ | 1.4 GB | 読み取り専用 |
ネットワークスループット | 200 - 3,200 MB/s | ベースライン - バースト時 |
ディスクスループット | 64 - 1,024 MB/s | ベースライン - バースト時 |
デイスク IOPS | 2,500 IOPS | Automatic provisioned |
IOPS の注意事項
64 MB/s スループット選択時の最大ディスク IOPS はベースライン 2,500 IOPSで、バースト時 40,000 IOPS です。
IOPS の指定で Automatic provisioned
選択時は 1GiB あたり 3 IOPS が提供されます。最小ディスクサイズで起動すると 64 GiB * 3 = 192 IOPS と非常に低いIOPS になり、ベースラインの 2,500 IOPS が適用されるものと思われます。。ディスクサイズが大きいときはある程度の IOPS 性能を見込めますが、最小限のディスクサイズ指定すると標準的な EBS(gp3)の 3,000 IOPS より劣った IOPS 性能です。
The maximum IOPS levels you can achieve are defined by the lower of: the maximum IOPS supported by your file server’s disk I/O connection, and the maximum SSD disk IOPS supported by your disks. In order to drive the maximum performance supported by the server-disk connection, you should configure your file system’s provisioned SSD IOPS to match the maximum IOPS in the table above. Amazon FSx for OpenZFS performance - FSx for OpenZFS
そのため、追加課金で任意のIOPS指定できるUser-provisioned
があります。大きなディスクサイズを必要としないときは IOPS を明示的に指定した利用をご検討ください。
通常の EBS とは
EBS(gp3)は 3000 IOPS, スループット 125 MB/s までは追加課金なしで利用できます。
Amazon EBS ボリュームの種類 - Amazon Elastic Compute Cloud
FSx for Lustre
各種パラメータの上限下限値が決まるキーとなるパラメータはディスクサイズです。下限値のディスクサイズ 1.2TiB 選択時の性能です。また、永続的な SSD ストレージ(Persistent_2
)の利用を想定しています。
FSx for Lustre | 備考 | |
---|---|---|
起動に必要な最低ディスクサイズ | 1.2 TiB | 下限値を指定 |
スループット | 125 MB/s | 下限値を選択 |
インメモリキャッシュサイズ | 3.4 GiB | 読み取り専用 |
ネットワークスループット | 320 - 1,300 MB/s | ベースライン - バースト時 |
ディスクスループット | 125 - 500 MB/s | ベースライン - バースト時 |
ネットワーク IOPS(ディスク IOPS) | 数万 - 数十万 IOPS | ベースライン - バースト時 |
スループットの注意事項
インメモリキャッシュに載っていないデータを読み込むときと、データを書き込むときのスループット値は基本的にはディスクスループットを参考にしてください。
When you read data that is stored on the file server's in-memory or SSD cache, file system performance is determined by the network throughput. When you write data to your file system, or when you read data that isn't stored on the in-memory cache, file system performance is determined by the lower of the network throughput and disk throughput. Amazon FSx for Lustre performance - FSx for Lustre
ちなみに FSx for Lustre は複数の OST(Object Storage Target)をストライピングしてディスクアクセス性能を稼ぐこともできます。今回は最小構成なのでシングルの OST のためストライピングは考慮していません。
最小構成のスペック比較
FSx for OpenZFS はバースト時の性能は高いですが、最小構成だと IOPS が低いので注意が必要です。
FSx for OpenZFS | FSx for Lustre | |
---|---|---|
起動に必要な最低ディスクサイズ | 64 GiB | 1.2 TiB |
スループット | 64 MB/s | 125 MB/s |
インメモリキャッシュサイズ | 1.4 GB | 3.4 GiB |
ネットワークスループット | 200 - 3,200 MB/s | 320 - 1,300 MB/s |
ディスクスループット | 64 - 1,024 MB/s | 125 - 500 MB/s |
デイスク IOPS | 2,500 IOPS | 数万 - 数十万 IOPS |
最小構成のランニングコスト
2022年8月11日現在の東京リージョンの価格になります。
最小構成ですと FSx for Lustre は FSx for OpenZFS に比べ約9倍のランニングコストがかかるのですが、IOPS の性能差が大きすぎてフェアではないです。FSx for OpenZFS を同等の構成に調整してみます。
FSx for OpenZFS | FSx for Lustre | |
---|---|---|
最小構成の月額 | $22.4 | $205 |
FSx for Lustre の最小構成に合わせる
FSx for OpenZFS のスペックを Lustre の最小構成に近しい値へ調整しました。スループットは OpenZFS が優れ、IOPS は Lustre に歩があります。
FSx for OpenZFS | FSx for Lustre | |
---|---|---|
起動に必要な最低ディスクサイズ | 1.2 TiB | 1.2 TiB |
スループット | 128 MB/s | 125 MB/s |
インメモリキャッシュサイズ | 2.8 GB | 3.4 GiB |
インメモリキャッシュからのネットワークスループット | 400 - 3,200 MB/s | 320 - 1,300 MB/s |
ディスクスループット | 128 - 1,024 MB/s | 125 - 500 MB/s |
デイスク IOPS | 10,000 IOPS | 数万 - 数十万 IOPS |
IOPS は妥協したにもかかわらず FSx for OpenZFS の方が高額になりました。
FSx for OpenZFS | FSx for Lustre | |
---|---|---|
ほぼ同構成の月額 | $218 | $205 |
Lustre クラスの性能を要求するときは素直に FSx for Lustre を選択した方が良さそうですね。
OpenZFS 見積もりポイント
計算元のデータはこちらのリンクをご確認ください。
OpenZFS の見積もりポイントは以下になります。
- SSD Storage capacity で必要容量を指定
- Throughput Capacity で任意の値を選択
- User-provisioned を選択
- SSD IOPS で必要な性能を指定
ディスクサイズ小さいかつ、IOPS自動設定のときは IOPS の性能が足を引っ張ることが予想されます。実用的な IOPS 値を明示的に指定してみて見積もってみてください。
総括
FSx for OpenZFS 最小構成の IOPS が心もとないです。要求される性能を満たす様にディスクサイズを増やし IOPS を稼ぐか、IOPS を明示的に指定して要求スペックを満たすよう調整することを推奨します。一方で数万 - 数十万 IOPS を求めていない場合は、適切なスペックに調整した OpenZFS を採用すると費用対高価の高いストレージとして利用できることがわかりました。
FSx for Lustre のイケている機能に Lustre ファイルシステムを通して透過的に S3 バケットへアクセスが可能になります。大容量のデータを取り扱う HPC ワークロードでは S3 の利用がかかせません。その S3 バケットに ParallelCluster(EC2)から直接アクセスできる嬉しい機能です。
月額料金(再掲)
2022年8月11日現在の東京リージョンの価格になります。
FSx for OpenZFS | FSx for Lustre | |
---|---|---|
最小構成の月額 | $22.4 | $205 |
同等構成の月額 | $218 | $205 |
おわりに
「必要なとき必要な分だけ計算リソースが欲しい」という願いは AWS ParallelCluster や AWS Batch の登場により叶えてくれました。 「HPC ワークロードに耐えられる必要なとき必要な分だけのストレージ性能が欲しい」という願いを叶えるために Temporary な Lustre サービスが生まれ S3 へ透過的にアクセスのできてかつ、高速なキャッシュレイヤーとして働いてくれると幸せになれる気がします。そんなサービスをお待ちしております。